package mn.idax.exchange.otc.service;

import mn.idax.exchange.otc.domain.capital.ChangeAccountDTO;
import mn.idax.exchange.otc.domain.capital.ChangeListData;
import mn.idax.exchange.otc.domain.capital.RequestLogSimple;
import mn.idax.exchange.otc.entity.Account;
import mn.idax.exchange.otc.entity.OTCOrder;
import mn.idax.exchange.otc.enums.CapitalAPIEnum;

/**
 * V3.0账户资金服务接口
 *
 * @author .shouhua
 * @time 2018.11.21
 */
public interface AccountCapitalService {

    /**
     * 获取资金账户
     *
     * @param userId
     * @param coinId
     * @return
     */
    Account getBalances(Integer userId, Integer coinId);
    Account getBalances(Integer userId, String coinCode);

    /**
     * 资金变更
     *
     * @param changeAccountDTO
     * @return
     */
    Boolean changeAccount(ChangeListData changeAccountDTO, CapitalAPIEnum changeAccountEnum);


    /**
     * 资金划拨
     *
     * @param order
     * @return
     */
    Boolean transferCapital(OTCOrder order);

    RequestLogSimple makeChangeAccountParams(ChangeListData changeListData, CapitalAPIEnum changeAccountEnum,RequestLogSimple requestLogSimple, ChangeAccountDTO
            changeAccountDTO);

    RequestLogSimple makeTransferCapitalData(OTCOrder order, CapitalAPIEnum changeAccountEnum, RequestLogSimple requestLogSimple);

}
